4 research outputs found
Automated Fault Localization in Large Java Applications
Modern software systems evolve steadily. Software developers change the software codebase every day to add new features, to improve the performance, or to fix bugs.
Despite extensive testing and code inspection processes before releasing a new software version, the chance of introducing new bugs is still high. A code that
worked yesterday may not work today, or it can show a degraded performance causing software regression. The laws of software evolution state that the
complexity increases as software evolves. Such increasing complexity makes software maintenance harder and more costly. In a typical software organization, the cost of
debugging, testing, and verification can easily range from 50% to 75% of the total development costs.
Given that human resources are the main cost factor in the software maintenance and the software codebase evolves continuously, this dissertation tries to answer the
following question: How can we help developers to localize the software defects more effectively during software development? We answer this question in three aspects.
First, we propose an approach to localize failure-inducing changes for crashing bugs. Assume the source code of a buggy version, a failing test, the stack trace of the
crashing site, and a previous correct version of the application. We leverage program
analysis to contrast the behavior of the two software versions under the failing test.
The difference set is the code statements which contribute to the failure site with a high probability.
Second, we extend the version comparison technique to detect the leak-inducing defects caused by software changes. Assume two versions of a software codebase (one previous non-leaky and the current leaky version) and the existing test suite of the application. First, we compare the memory footprint of the code locations between two versions. Then, we use a confidence score to rank the suspicious code statements,
i.e., those statements which can be the potential root causes of memory leaks. The higher the score, the more likely the code statement is a potential leak.
Third, our observation on the related work about debugging and fault localization
reveals that there is no empirical study which characterizes the properties of the leak-
inducing defects and their repairs. Understanding the characteristics of the real defects
caused by resource and memory leaks can help both researchers and practitioners to improve the current techniques for leak detection and repair. To fill this gap, we conduct an empirical study on 491 reported resource and memory leak defects from 15 large Java applications. We use our findings to draw implications for leak avoidance,
detection, localization, and repair
Memory and resource leak defects and their repairs in Java projects
Despite huge software engineering efforts and programming language support,
resource and memory leaks are still a troublesome issue, even in memory-managed
languages such as Java. Understanding the properties of leak-inducing defects,
how the leaks manifest, and how they are repaired is an essential prerequisite
for designing better approaches for avoidance, diagnosis, and repair of
leak-related bugs.
We conduct a detailed empirical study on 491 issues from 15 large open-source
Java projects. The study proposes taxonomies for the leak types, for the
defects causing them, and for the repair actions. We investigate, under several
aspects, the distributions within each taxonomy and the relationships between
them. We find that manual code inspection and manual runtime detection are
still the main methods for leak detection. We find that most of the errors
manifest on error-free execution paths, and developers repair the leak defects
in a shorter time than non-leak defects. We also identify 13 recurring code
transformations in the repair patches. Based on our findings, we draw a variety
of implications on how developers can avoid, detect, isolate and repair
leak-related bugs
Impact of clinical supervision on field training of nursing students at Urmia University of Medical Sciences
Introduction: Obtaining clinical competency in clinical education
is one of the problems in nursing and use of the new methods of
clinical training is very important. Clinical supervision is one of
the methods used as a mechanism to promote knowledge and skill
for promoting professional performance in nursing students. This
study is carried out to determine the impact of clinical supervision
on field training of nursing students at Urmia University of
Medical Sciences.
Methods: In the present experimental study, 32 nursing students
were enrolled in the study based on census and randomly
assigned into two groups of experimental and control by block
randomization. Clinical supervision was used in the experimental
group and the control group received routine clinical trainings
in the field. The students’ clinical skills were assessed using a
researcher-made checklist, the validity of which was confirmed
through content validity method by 13 faculty members and
its reliability was approved by test-retest method on 20 nursing
students in the form of a pilot study and through Cronbach’s alpha
(87%). Data were analyzed using SPSS, version 14.
Results: There was a significant difference between the
experimental and control groups in clinical skills such as
recognition and administration of medication, team participation,
patients and their relatives’ education, considering the safety,
infection prevention and nursing process (p<0.005).
Conclusion: The study demonstrated that in clinical supervision
process, students have a better communication and cooperation
with their instructor and with each other and their confidence and
understanding and the amount of learning in practical skills was
enhanced more than routine clinical training. The implementation
of this clinical training method for students of nursing and other
fields of medical sciences is recommendable